



#ifndef _PDF_BOOKMARK_H_
#define _PDF_BOOKMARK_H_

#include <wx/string.h>

#include "wx/pdfdocdef.h"

/// Class representing bookmarks for defining the document's outline. (For internal use only)
class WXDLLIMPEXP_PDFDOC wxPdfBookmark
{
public:
  /// Constructor
  
  wxPdfBookmark(const wxString& txt, int level, double y, int page);

  /// Destructor
  virtual ~wxPdfBookmark();

  /// Get the bookmark text
  
  wxString GetText() { return m_text; }

  /// Get the associated level
  
  int GetLevel() { return m_level; }

  /// Get the Y offset of the bookmark
  
  double GetY() { return m_y; }

  /// Get the page number of the bookmark
  
  int GetPage() { return m_page; }

  /// Set the parent of the bookmark
  
  void SetParent(int parent) { m_parent = parent; }

  /// Get the parent of the bookmark
  
  int GetParent() { return m_parent; }

  /// Set previous bookmark
  
  void SetPrev(int prev) { m_prev = prev; }

  /// Get previous bookmark
  
  int GetPrev() { return m_prev; }

  /// Set next bookmark
  
  void SetNext(int next) { m_next = next; }

  /// Get next bookmark
  
  int GetNext() { return m_next; }

  /// Set first bookmark
  
  void SetFirst(int first) { m_first = first; }

  /// Get first bookmark
  
  int GetFirst() { return m_first; }

  /// Set last bookmark
  
  void SetLast(int last) { m_last = last; }

  /// Get last bookmark
  
  int GetLast() { return m_last; }

private:
  wxString m_text;    ///< Text of bookmark
  int      m_level;   ///< Associated level
  double   m_y;       ///< Y offset
  int      m_page;    ///< Page number
  int      m_parent;  ///< Parent bookmark
  int      m_prev;    ///< Previous bookmark
  int      m_next;    ///< Next bookmark
  int      m_first;   ///< First bookmark
  int      m_last;    ///< Last bookmark
};

#endif
